/**
 * <copyright>
 *
 * Copyright (c) 2011 Zeligsoft (2009) Limited
 * All rights reserved.   This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: 
 *   Zeligsoft (2009) Limited - Initial API and implementation
 *
 * </copyright>
 *
 */
package org.omg.deployment.provider;

import java.util.ArrayList;
import java.util.Collection;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;

import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

import org.omg.deployment.util.DeploymentAdapterFactory;

/**
 * This is the factory that is used to provide the interfaces needed to support Viewers.
 * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
 * The adapters also support Eclipse property sheets.
 * Note that most of the adapters are shared among multiple instances.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public class DeploymentItemProviderAdapterFactory extends
		DeploymentAdapterFactory implements ComposeableAdapterFactory,
		IChangeNotifier, IDisposable {
	/**
	 * This keeps track of the root adapter factory that delegates to this adapter factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComposedAdapterFactory parentAdapterFactory;

	/**
	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IChangeNotifier changeNotifier = new ChangeNotifier();

	/**
	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected Collection<Object> supportedTypes = new ArrayList<Object>();

	/**
	 * This constructs an instance.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DeploymentItemProviderAdapterFactory() {
		supportedTypes.add(IEditingDomainItemProvider.class);
		supportedTypes.add(IStructuredItemContentProvider.class);
		supportedTypes.add(ITreeItemContentProvider.class);
		supportedTypes.add(IItemLabelProvider.class);
		supportedTypes.add(IItemPropertySource.class);
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.AliasType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AliasTypeItemProvider aliasTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.AliasType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAliasTypeAdapter() {
		if (aliasTypeItemProvider == null) {
			aliasTypeItemProvider = new AliasTypeItemProvider(this);
		}

		return aliasTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.Any} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AnyItemProvider anyItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.Any}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAnyAdapter() {
		if (anyItemProvider == null) {
			anyItemProvider = new AnyItemProvider(this);
		}

		return anyItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ArrayType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ArrayTypeItemProvider arrayTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ArrayType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createArrayTypeAdapter() {
		if (arrayTypeItemProvider == null) {
			arrayTypeItemProvider = new ArrayTypeItemProvider(this);
		}

		return arrayTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ArtifactDeploymentDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ArtifactDeploymentDescriptionItemProvider artifactDeploymentDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ArtifactDeploymentDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createArtifactDeploymentDescriptionAdapter() {
		if (artifactDeploymentDescriptionItemProvider == null) {
			artifactDeploymentDescriptionItemProvider = new ArtifactDeploymentDescriptionItemProvider(
					this);
		}

		return artifactDeploymentDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.BoundedStringType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BoundedStringTypeItemProvider boundedStringTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.BoundedStringType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBoundedStringTypeAdapter() {
		if (boundedStringTypeItemProvider == null) {
			boundedStringTypeItemProvider = new BoundedStringTypeItemProvider(
					this);
		}

		return boundedStringTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.Bridge} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BridgeItemProvider bridgeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.Bridge}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBridgeAdapter() {
		if (bridgeItemProvider == null) {
			bridgeItemProvider = new BridgeItemProvider(this);
		}

		return bridgeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ComponentExternalPortEndpoint} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComponentExternalPortEndpointItemProvider componentExternalPortEndpointItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ComponentExternalPortEndpoint}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createComponentExternalPortEndpointAdapter() {
		if (componentExternalPortEndpointItemProvider == null) {
			componentExternalPortEndpointItemProvider = new ComponentExternalPortEndpointItemProvider(
					this);
		}

		return componentExternalPortEndpointItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ComponentInterfaceDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComponentInterfaceDescriptionItemProvider componentInterfaceDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ComponentInterfaceDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createComponentInterfaceDescriptionAdapter() {
		if (componentInterfaceDescriptionItemProvider == null) {
			componentInterfaceDescriptionItemProvider = new ComponentInterfaceDescriptionItemProvider(
					this);
		}

		return componentInterfaceDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ComponentPortDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComponentPortDescriptionItemProvider componentPortDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ComponentPortDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createComponentPortDescriptionAdapter() {
		if (componentPortDescriptionItemProvider == null) {
			componentPortDescriptionItemProvider = new ComponentPortDescriptionItemProvider(
					this);
		}

		return componentPortDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ComponentPropertyDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComponentPropertyDescriptionItemProvider componentPropertyDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ComponentPropertyDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createComponentPropertyDescriptionAdapter() {
		if (componentPropertyDescriptionItemProvider == null) {
			componentPropertyDescriptionItemProvider = new ComponentPropertyDescriptionItemProvider(
					this);
		}

		return componentPropertyDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ConnectionResourceDeploymentDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ConnectionResourceDeploymentDescriptionItemProvider connectionResourceDeploymentDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ConnectionResourceDeploymentDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createConnectionResourceDeploymentDescriptionAdapter() {
		if (connectionResourceDeploymentDescriptionItemProvider == null) {
			connectionResourceDeploymentDescriptionItemProvider = new ConnectionResourceDeploymentDescriptionItemProvider(
					this);
		}

		return connectionResourceDeploymentDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.DataType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DataTypeItemProvider dataTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.DataType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDataTypeAdapter() {
		if (dataTypeItemProvider == null) {
			dataTypeItemProvider = new DataTypeItemProvider(this);
		}

		return dataTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.DataValue} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DataValueItemProvider dataValueItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.DataValue}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDataValueAdapter() {
		if (dataValueItemProvider == null) {
			dataValueItemProvider = new DataValueItemProvider(this);
		}

		return dataValueItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.DeploymentPlan} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DeploymentPlanItemProvider deploymentPlanItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.DeploymentPlan}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDeploymentPlanAdapter() {
		if (deploymentPlanItemProvider == null) {
			deploymentPlanItemProvider = new DeploymentPlanItemProvider(this);
		}

		return deploymentPlanItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.DocumentRoot} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DocumentRootItemProvider documentRootItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.DocumentRoot}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDocumentRootAdapter() {
		if (documentRootItemProvider == null) {
			documentRootItemProvider = new DocumentRootItemProvider(this);
		}

		return documentRootItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.Domain} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DomainItemProvider domainItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.Domain}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDomainAdapter() {
		if (domainItemProvider == null) {
			domainItemProvider = new DomainItemProvider(this);
		}

		return domainItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.EnumType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected EnumTypeItemProvider enumTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.EnumType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createEnumTypeAdapter() {
		if (enumTypeItemProvider == null) {
			enumTypeItemProvider = new EnumTypeItemProvider(this);
		}

		return enumTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ExternalReferenceEndpoint} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ExternalReferenceEndpointItemProvider externalReferenceEndpointItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ExternalReferenceEndpoint}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createExternalReferenceEndpointAdapter() {
		if (externalReferenceEndpointItemProvider == null) {
			externalReferenceEndpointItemProvider = new ExternalReferenceEndpointItemProvider(
					this);
		}

		return externalReferenceEndpointItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.FixedType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected FixedTypeItemProvider fixedTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.FixedType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createFixedTypeAdapter() {
		if (fixedTypeItemProvider == null) {
			fixedTypeItemProvider = new FixedTypeItemProvider(this);
		}

		return fixedTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ImplementationDependency} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ImplementationDependencyItemProvider implementationDependencyItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ImplementationDependency}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createImplementationDependencyAdapter() {
		if (implementationDependencyItemProvider == null) {
			implementationDependencyItemProvider = new ImplementationDependencyItemProvider(
					this);
		}

		return implementationDependencyItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.InstanceDeploymentDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InstanceDeploymentDescriptionItemProvider instanceDeploymentDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.InstanceDeploymentDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInstanceDeploymentDescriptionAdapter() {
		if (instanceDeploymentDescriptionItemProvider == null) {
			instanceDeploymentDescriptionItemProvider = new InstanceDeploymentDescriptionItemProvider(
					this);
		}

		return instanceDeploymentDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.InstanceResourceDeploymentDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InstanceResourceDeploymentDescriptionItemProvider instanceResourceDeploymentDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.InstanceResourceDeploymentDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInstanceResourceDeploymentDescriptionAdapter() {
		if (instanceResourceDeploymentDescriptionItemProvider == null) {
			instanceResourceDeploymentDescriptionItemProvider = new InstanceResourceDeploymentDescriptionItemProvider(
					this);
		}

		return instanceResourceDeploymentDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.Interconnect} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InterconnectItemProvider interconnectItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.Interconnect}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInterconnectAdapter() {
		if (interconnectItemProvider == null) {
			interconnectItemProvider = new InterconnectItemProvider(this);
		}

		return interconnectItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.MonolithicDeploymentDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MonolithicDeploymentDescriptionItemProvider monolithicDeploymentDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.MonolithicDeploymentDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMonolithicDeploymentDescriptionAdapter() {
		if (monolithicDeploymentDescriptionItemProvider == null) {
			monolithicDeploymentDescriptionItemProvider = new MonolithicDeploymentDescriptionItemProvider(
					this);
		}

		return monolithicDeploymentDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.NamedValue} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NamedValueItemProvider namedValueItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.NamedValue}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNamedValueAdapter() {
		if (namedValueItemProvider == null) {
			namedValueItemProvider = new NamedValueItemProvider(this);
		}

		return namedValueItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.Node} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NodeItemProvider nodeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.Node}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNodeAdapter() {
		if (nodeItemProvider == null) {
			nodeItemProvider = new NodeItemProvider(this);
		}

		return nodeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ObjrefType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ObjrefTypeItemProvider objrefTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ObjrefType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createObjrefTypeAdapter() {
		if (objrefTypeItemProvider == null) {
			objrefTypeItemProvider = new ObjrefTypeItemProvider(this);
		}

		return objrefTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.PlanConnectionDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PlanConnectionDescriptionItemProvider planConnectionDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.PlanConnectionDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPlanConnectionDescriptionAdapter() {
		if (planConnectionDescriptionItemProvider == null) {
			planConnectionDescriptionItemProvider = new PlanConnectionDescriptionItemProvider(
					this);
		}

		return planConnectionDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.PlanLocality} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PlanLocalityItemProvider planLocalityItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.PlanLocality}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPlanLocalityAdapter() {
		if (planLocalityItemProvider == null) {
			planLocalityItemProvider = new PlanLocalityItemProvider(this);
		}

		return planLocalityItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.PlanPropertyMapping} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PlanPropertyMappingItemProvider planPropertyMappingItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.PlanPropertyMapping}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPlanPropertyMappingAdapter() {
		if (planPropertyMappingItemProvider == null) {
			planPropertyMappingItemProvider = new PlanPropertyMappingItemProvider(
					this);
		}

		return planPropertyMappingItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.PlanSubcomponentPortEndpoint} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PlanSubcomponentPortEndpointItemProvider planSubcomponentPortEndpointItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.PlanSubcomponentPortEndpoint}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPlanSubcomponentPortEndpointAdapter() {
		if (planSubcomponentPortEndpointItemProvider == null) {
			planSubcomponentPortEndpointItemProvider = new PlanSubcomponentPortEndpointItemProvider(
					this);
		}

		return planSubcomponentPortEndpointItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.PlanSubcomponentPropertyReference} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PlanSubcomponentPropertyReferenceItemProvider planSubcomponentPropertyReferenceItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.PlanSubcomponentPropertyReference}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPlanSubcomponentPropertyReferenceAdapter() {
		if (planSubcomponentPropertyReferenceItemProvider == null) {
			planSubcomponentPropertyReferenceItemProvider = new PlanSubcomponentPropertyReferenceItemProvider(
					this);
		}

		return planSubcomponentPropertyReferenceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.Property} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PropertyItemProvider propertyItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.Property}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPropertyAdapter() {
		if (propertyItemProvider == null) {
			propertyItemProvider = new PropertyItemProvider(this);
		}

		return propertyItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.Requirement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected RequirementItemProvider requirementItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.Requirement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createRequirementAdapter() {
		if (requirementItemProvider == null) {
			requirementItemProvider = new RequirementItemProvider(this);
		}

		return requirementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.Resource} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ResourceItemProvider resourceItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.Resource}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createResourceAdapter() {
		if (resourceItemProvider == null) {
			resourceItemProvider = new ResourceItemProvider(this);
		}

		return resourceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ResourceDeploymentDescription} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ResourceDeploymentDescriptionItemProvider resourceDeploymentDescriptionItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ResourceDeploymentDescription}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createResourceDeploymentDescriptionAdapter() {
		if (resourceDeploymentDescriptionItemProvider == null) {
			resourceDeploymentDescriptionItemProvider = new ResourceDeploymentDescriptionItemProvider(
					this);
		}

		return resourceDeploymentDescriptionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.SatisfierProperty} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SatisfierPropertyItemProvider satisfierPropertyItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.SatisfierProperty}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSatisfierPropertyAdapter() {
		if (satisfierPropertyItemProvider == null) {
			satisfierPropertyItemProvider = new SatisfierPropertyItemProvider(
					this);
		}

		return satisfierPropertyItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.SequenceType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SequenceTypeItemProvider sequenceTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.SequenceType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSequenceTypeAdapter() {
		if (sequenceTypeItemProvider == null) {
			sequenceTypeItemProvider = new SequenceTypeItemProvider(this);
		}

		return sequenceTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.SharedResource} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SharedResourceItemProvider sharedResourceItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.SharedResource}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSharedResourceAdapter() {
		if (sharedResourceItemProvider == null) {
			sharedResourceItemProvider = new SharedResourceItemProvider(this);
		}

		return sharedResourceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.StructMemberType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StructMemberTypeItemProvider structMemberTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.StructMemberType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStructMemberTypeAdapter() {
		if (structMemberTypeItemProvider == null) {
			structMemberTypeItemProvider = new StructMemberTypeItemProvider(
					this);
		}

		return structMemberTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.StructType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StructTypeItemProvider structTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.StructType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStructTypeAdapter() {
		if (structTypeItemProvider == null) {
			structTypeItemProvider = new StructTypeItemProvider(this);
		}

		return structTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.UnionMemberType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected UnionMemberTypeItemProvider unionMemberTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.UnionMemberType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createUnionMemberTypeAdapter() {
		if (unionMemberTypeItemProvider == null) {
			unionMemberTypeItemProvider = new UnionMemberTypeItemProvider(this);
		}

		return unionMemberTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.UnionType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected UnionTypeItemProvider unionTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.UnionType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createUnionTypeAdapter() {
		if (unionTypeItemProvider == null) {
			unionTypeItemProvider = new UnionTypeItemProvider(this);
		}

		return unionTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ValueMemberType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ValueMemberTypeItemProvider valueMemberTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ValueMemberType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createValueMemberTypeAdapter() {
		if (valueMemberTypeItemProvider == null) {
			valueMemberTypeItemProvider = new ValueMemberTypeItemProvider(this);
		}

		return valueMemberTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.omg.deployment.ValueType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ValueTypeItemProvider valueTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.omg.deployment.ValueType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createValueTypeAdapter() {
		if (valueTypeItemProvider == null) {
			valueTypeItemProvider = new ValueTypeItemProvider(this);
		}

		return valueTypeItemProvider;
	}

	/**
	 * This returns the root adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ComposeableAdapterFactory getRootAdapterFactory() {
		return parentAdapterFactory == null ? this : parentAdapterFactory
				.getRootAdapterFactory();
	}

	/**
	 * This sets the composed adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setParentAdapterFactory(
			ComposedAdapterFactory parentAdapterFactory) {
		this.parentAdapterFactory = parentAdapterFactory;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean isFactoryForType(Object type) {
		return supportedTypes.contains(type) || super.isFactoryForType(type);
	}

	/**
	 * This implementation substitutes the factory itself as the key for the adapter.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter adapt(Notifier notifier, Object type) {
		return super.adapt(notifier, this);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object adapt(Object object, Object type) {
		if (isFactoryForType(type)) {
			Object adapter = super.adapt(object, type);
			if (!(type instanceof Class<?>)
					|| (((Class<?>) type).isInstance(adapter))) {
				return adapter;
			}
		}

		return null;
	}

	/**
	 * This adds a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void addListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.addListener(notifyChangedListener);
	}

	/**
	 * This removes a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void removeListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.removeListener(notifyChangedListener);
	}

	/**
	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void fireNotifyChanged(Notification notification) {
		changeNotifier.fireNotifyChanged(notification);

		if (parentAdapterFactory != null) {
			parentAdapterFactory.fireNotifyChanged(notification);
		}
	}

	/**
	 * This disposes all of the item providers created by this factory. 
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void dispose() {
		if (aliasTypeItemProvider != null)
			aliasTypeItemProvider.dispose();
		if (anyItemProvider != null)
			anyItemProvider.dispose();
		if (arrayTypeItemProvider != null)
			arrayTypeItemProvider.dispose();
		if (artifactDeploymentDescriptionItemProvider != null)
			artifactDeploymentDescriptionItemProvider.dispose();
		if (boundedStringTypeItemProvider != null)
			boundedStringTypeItemProvider.dispose();
		if (bridgeItemProvider != null)
			bridgeItemProvider.dispose();
		if (componentExternalPortEndpointItemProvider != null)
			componentExternalPortEndpointItemProvider.dispose();
		if (componentInterfaceDescriptionItemProvider != null)
			componentInterfaceDescriptionItemProvider.dispose();
		if (componentPortDescriptionItemProvider != null)
			componentPortDescriptionItemProvider.dispose();
		if (componentPropertyDescriptionItemProvider != null)
			componentPropertyDescriptionItemProvider.dispose();
		if (connectionResourceDeploymentDescriptionItemProvider != null)
			connectionResourceDeploymentDescriptionItemProvider.dispose();
		if (dataTypeItemProvider != null)
			dataTypeItemProvider.dispose();
		if (dataValueItemProvider != null)
			dataValueItemProvider.dispose();
		if (deploymentPlanItemProvider != null)
			deploymentPlanItemProvider.dispose();
		if (documentRootItemProvider != null)
			documentRootItemProvider.dispose();
		if (domainItemProvider != null)
			domainItemProvider.dispose();
		if (enumTypeItemProvider != null)
			enumTypeItemProvider.dispose();
		if (externalReferenceEndpointItemProvider != null)
			externalReferenceEndpointItemProvider.dispose();
		if (fixedTypeItemProvider != null)
			fixedTypeItemProvider.dispose();
		if (implementationDependencyItemProvider != null)
			implementationDependencyItemProvider.dispose();
		if (instanceDeploymentDescriptionItemProvider != null)
			instanceDeploymentDescriptionItemProvider.dispose();
		if (instanceResourceDeploymentDescriptionItemProvider != null)
			instanceResourceDeploymentDescriptionItemProvider.dispose();
		if (interconnectItemProvider != null)
			interconnectItemProvider.dispose();
		if (monolithicDeploymentDescriptionItemProvider != null)
			monolithicDeploymentDescriptionItemProvider.dispose();
		if (namedValueItemProvider != null)
			namedValueItemProvider.dispose();
		if (nodeItemProvider != null)
			nodeItemProvider.dispose();
		if (objrefTypeItemProvider != null)
			objrefTypeItemProvider.dispose();
		if (planConnectionDescriptionItemProvider != null)
			planConnectionDescriptionItemProvider.dispose();
		if (planLocalityItemProvider != null)
			planLocalityItemProvider.dispose();
		if (planPropertyMappingItemProvider != null)
			planPropertyMappingItemProvider.dispose();
		if (planSubcomponentPortEndpointItemProvider != null)
			planSubcomponentPortEndpointItemProvider.dispose();
		if (planSubcomponentPropertyReferenceItemProvider != null)
			planSubcomponentPropertyReferenceItemProvider.dispose();
		if (propertyItemProvider != null)
			propertyItemProvider.dispose();
		if (requirementItemProvider != null)
			requirementItemProvider.dispose();
		if (resourceItemProvider != null)
			resourceItemProvider.dispose();
		if (resourceDeploymentDescriptionItemProvider != null)
			resourceDeploymentDescriptionItemProvider.dispose();
		if (satisfierPropertyItemProvider != null)
			satisfierPropertyItemProvider.dispose();
		if (sequenceTypeItemProvider != null)
			sequenceTypeItemProvider.dispose();
		if (sharedResourceItemProvider != null)
			sharedResourceItemProvider.dispose();
		if (structMemberTypeItemProvider != null)
			structMemberTypeItemProvider.dispose();
		if (structTypeItemProvider != null)
			structTypeItemProvider.dispose();
		if (unionMemberTypeItemProvider != null)
			unionMemberTypeItemProvider.dispose();
		if (unionTypeItemProvider != null)
			unionTypeItemProvider.dispose();
		if (valueMemberTypeItemProvider != null)
			valueMemberTypeItemProvider.dispose();
		if (valueTypeItemProvider != null)
			valueTypeItemProvider.dispose();
	}

}
